dB−IBASIC インタープリタ&コンパイラ ――――――――――――――――――――――――――――――――――――――― I/O 1984年 4月号掲載 X1 インタープリタ マシン語 00000H−05BFFH S:00000H コンパイラ マシン語 0E000H−0F9FFH S:0E000H 起動方法 インタープリタ IPLから起動 コンパイラ CLEAR&HDFFF MON L J E000 *インタープリタの[fix]は  訂正記事00500H〜005FFHの修正 ――――――――――――――――――――――――――――――――――――――― パソコン・テレビX1用「dB−コンパイラ」は、 すでにI/O誌で発表したX1および MZ−2200用「dB−BASIC」の基本思想に基づき開発したものです。 ゲーム、ホビー開発用に強化した、 整数型BASICのdB−IBASICプログラムを このdB−コンパイラで 簡単にマシン語にコンパイルすることが可能になりました。 コンパイルすると10数倍の高速処理をします。 オリジナル・ゲーム作りに大きな威力を発揮することでしょう。 なお、dB−BASICシリーズとして さらにこの言語思想を拡げていきたいと考えております。 dB−IBASICの特徴  ●インタープリタ、コンパイラが同居できるので、   開発効率が高くなっています。  ●フリーエリアはインタープリタのみで40Kバイト、   コンパイラと同居しているときで32Kバイトとなっています。  ●G−RAM上にオブジェクトを落とせるため、   オブジェクトも40Kバイト程度まで作れます。  ●REPEAT〜UNTIL、MPUT、MEM、INARYなどの   ゲーム用命令が強化されています。  ●プログラムは最適化されているので、   実行速度や効率が高くなっています。  ●コンパイラ自体マシン語で記述されているので、   コンパイル時間が短くなっています。 コンパイラの手順 ソース・プログラムはdB−IBASICのインタープリタ上で 充分にBUGを取ってください。 (1)コンパイラはdB−IBASIC上にロードするので、   dB−IBASICがX1に入っていない場合は、   まずdB−IBASICを起動してください。   次に、インタープリタ・レベル(dB−IBASICのコマンド待ち状態)で、   ・―――――――――――――――・   |  CLEAR&HDFFF        |   ・―――――――――――――――・   を実行してください、これで、dB−IBASICのエリアを制限し、   コンパイラをロードするエリアを確保します。 (2)LOADM 、またはモニタ(MON) モードの   ロード・コマンドLでロードします。 (3)コンパイラの実行アドレスE000Hを呼び出して、   コンパイラを起動します。   dB−IBASICのインタープリタ・レベルでは、   CALL&HE000となります。   また、モニタ・モードの場合は、    (1)#J    (2)J-adr.:E000   と入力します。 (4)この入力を終えるとCRT画面に、   ・――――――――――――――――・   | I-BASIC COMPILER Ver 1.0   |   | TAPE LOAD (Y or N)?      |   ・――――――――――――――――・   と表示されます。   カセット・テープからソース・プログラムをロードするか、   メモリ上にあるソース・プログラムをそのまま使用するか決めてください。   テープからソース・プログラムをロードする場合は、   ソース・プログラムの入ったカセット・テープをセットしてから   [Y]を入力してください。   注1:テープからソース・プログラムをロードした場合、      メモリの4000H番地から格納されるので、      dB−IBASICのインタープリタ部(4000H〜5B00H)は破壊され、      以後dB−IBASICのインタープリタ・レベルには      戻れません、      すでにメイン・メモリ上にソース・プログラムがあり、      それをコンパイルする場合は、      テープからロードする必要がないので      [N]を入力してください。   注2:モニタ・モードからdB−IBASICの      インタープリタ・レベルには、Rコマンドで戻れます。      また、コンパイルしたオブジェクトがソース・プログラムに      重なっていない場合は、再びソース・プログラムを      dB−IBASICのインタープリタで編集することも可能です。      ただし、オブジェクト・プログラムを実行すると、      実行にともなってワーク・エリアが変わるので、      これによってdB−IBASIC、テキストなどが      破壊される場合があるので、充分に気をつけてください。 (5)次に、テープからロードしたソース・プログラム、   またはすでにメモリ上にあるソース・プログラムの範囲が   16進数の形式で表示されます。 (6)ここで次のように、ソース・プログラムをコンパイルして   オブジェクトに落とす番地(ADR.)を聞いてきます。   ・――――――――――――――――・   | OBJ ADR.(>=4000H)? 0000    |   |          |     |   |          ・―カーソル点滅|   ・――――――――――――――――・   設定可能番地は4000H以降です。   ソース・プログラムの範囲が小さく、   残りのメモリ・エリアにオブジェクトが入るならば、   ソース・プログラムの最終番地より後に設定してください。   このことによって、(4)で述べたように、   モニタ・モードからdB−IBASICのインタープリタに戻って   ソース・プログラムの再編集が可能となります。    注1:テープからソース・プログラムをロードせず、       メモリ上のソースをそのまま使う場合でも、       ソース・プログラムの範囲にオブジェクトの       先頭アドレスが重なった場合、       メイン・メモリ上でコンパイルを行なったり、       このように重なったオブジェクトを       メイン・メモリに読み込んだりすると、       重なった部分のソース・プログラムはなくなります。       この場合、dB−IBASICのインタープリタへ戻って       ソースプログラムの編集はできません。 (7)オブジェクトに落とす先頭アドレスを入力すると、CRT画面に   ・―――――――――――――――・   | PORT SAVE (Y or N) ?    |   ・―――――――――――――――・   と表示されます。   コンパイルによってオブジェクトに落とす場所を指定します。   [Y]を入力すると、G−RAM上にコンパイルしたオブジェクトを   落とします(I/Oポートを経由してG−RAM上ににセーブする)。   [N]を入力すると、(6)で設定したメイン・メモリ上の   オブジェクトの先頭番地からオブジェクトがセーブされます。   ソース・プログラム領域と、オブジェクト領域が重なっていない場合のみ、   直接メイン・メモリにオブジェクトを落とせます。   重なっている場合は、G−RAMにセーブ(PORT SAVE) します。 (8)次のように、コンパイラのワーク先頭番地を聞いてきます。   ・――――――――――――――――・   | WORK ADR.(